<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<!-- 
    全局组件：通过 vue 实例中的 component 注册的, app.component(name, component) 方法注入

    局部组件：直接定义一个组件的 json 对象，然后通过 vue 实例中的 components 注入
             局部组件中可以使用全局组件
 -->

<body>
    <div id="app">
        <div id="home">
            <lk-count></lk-count>
            <div>
                <lk-count></lk-count>
            </div>
            <lk-box></lk-box>
        </div>
    </div>
    <script src="js/vue.js"></script>

    <script>

        // 定义局部组件
        const Counter = {
            data() {
                return {
                    count: 0,
                }
            },
            template: `
                <div>局部组件</div>
                <button @click="count++"> 你点击了按钮 {{count}} 次</button>
            `,
        };

        const Box = {
            // 局部组件中引入 局部组件
            components:{
                "child-count": Counter,
            },
            data() {
                return {
                    count: 0,
                }
            },
            // 在组件内部嵌套组件
            template: `
                <div style="width:200px; height: 200px; background-color: pink;"> 
                    盒子组件
                    <child-count></child-count>
                </div>
            `,
        };


        // 1. 创建 vue 实例
        const app = Vue.createApp({
            data() {
                return {
                }
            },
            // 组件选项
            components: {
                // "lk-count": Counter,
                "lk-box": Box
            }
        });

        // 2. 定义一个组件（全局组件）, 这里的 命名 'button-counter' 与  'ButtonCounter' 是等效的
        app.component('button-counter', {
            data() {
                return {
                    count: 0,
                }
            },
            template: `
                <div>全局组件</div>
                <button @click="count++"> 你点击了按钮 {{count}} 次 </button>
            `,
        });

        // 3. 挂载
        app.mount("#app");

    </script>
</body>

</html>